<?php

namespace app\api\controller;

use app\common\controller\Api;
use app\common\library\Faceid as FaceIdLib;
use app\common\library\Credit as CreditLib;
use Carbon\Carbon;

/**
 * 示例接口
 */
class Demo extends Api
{

    //如果$noNeedLogin为空表示所有接口都需要登录才能请求
    //如果$noNeedRight为空表示所有接口都需要验证权限才能请求
    //如果接口已经设置无需登录,那也就无需鉴权了
    //
    // 无需登录的接口,*表示全部
    protected $noNeedLogin = ['*'];
    // 无需鉴权的接口,*表示全部
    protected $noNeedRight = ['test2'];

    /**
     * 测试方法
     *
     * @ApiTitle    (测试名称)
     * @ApiSummary  (测试描述信息)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/demo/test/id/{id}/name/{name})
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="id", type="integer", required=true, description="会员ID")
     * @ApiParams   (name="name", type="string", required=true, description="用户名")
     * @ApiParams   (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturnParams   (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据返回")
     * @ApiReturn   ({
         'code':'1',
         'msg':'返回成功'
        })
     */
    public function test()
    {
        // 分钟
        $diffDuration = 1 * 60;
        $timepills = $this->request->param('timepills/a');
        foreach ($timepills as &$pill) {
            $pill['price'] = intval($pill['price']);
            $pill['duration'] = intval($pill['duration']);
        }
        unset($pill);
        array_multisort(array_column($timepills, 'price'), SORT_ASC, $timepills);
        $newpills = [];
        $plusDuration = 0;
        foreach ($timepills as $pill) {
            if ($plusDuration >= $diffDuration) {
                break;
            }
            $newpills[] = $pill;
            $plusDuration += $pill['duration'];
        }
        $this->success('返回成功', $newpills);
        /*
        $starttime = '2024-04-19 11:00:00';
        $endtime = '2024-04-19 12:30:00';
        $startTime = Carbon::parse($starttime);
        $endTime = Carbon::parse($endtime);
        $int = $startTime->diffInMinutes($endTime, false);
        echo $int;
        echo $startTime->toDateString();
        $this->success('返回成功');
         */

        /*
        $creditLib = new CreditLib();   
        $creditLib->calcCreditDaemon();
        $this->success('返回成功', $this->request->param());
         */
    }

    public function testfaceId()
    {
        if ($this->request->isPost()) {
            $name = $this->request->post('name', '');
            $idCard = $this->request->post('id_card', '');

            $faceidLib = new FaceIdLib();
            $checkRes = $faceidLib->checkNameAndIdCard($name, $idCard);

            $msg = $checkRes['msg'];
            $data = $checkRes['data'];

            if ($msg != 'ok') {
                $this->error($msg, $data);
            }
            $this->success($msg, $data);

        }
    }

    /**
     * 无需登录的接口
     *
     */
    public function test1()
    {
        $this->success('返回成功', ['action' => 'test1']);
    }

    /**
     * 需要登录的接口
     *
     */
    public function test2()
    {
        $this->success('返回成功', ['action' => 'test2']);
    }

    /**
     * 需要登录且需要验证有相应组的权限
     *
     */
    public function test3()
    {
        $this->success('返回成功', ['action' => 'test3']);
    }

}
